package cl.tinet.reservaCD.reserva;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;

import cl.tinet.reservaCD.modelo.Reserva;
import cl.tinet.reservaCD.modelo.Usuario;

/**
 * 
 * Clase bean de la reserva.
 * 
 * @author Carlos Duque.
 */
@Stateless(mappedName = "beanReserva", name = "beanReserva")
public class ReservaBeanImpl implements ReservaBean {

    /**
     * Manejador de entidad y contexto de persistencia de los datos.
     */
    @PersistenceContext(unitName = "MySqlDS")
    private EntityManager em;

    /**
     * Instancia de reserva Dao.
     */
    private ReservaDao daoReserva;

    /**
     * Instanciador de nuevo Entity Manager para cada acceso a la clase.
     */
    @PostConstruct
    public void init() {
        daoReserva = new ReservaDaoImpl(em);
    }

    /**
     * {@inheritDoc}
     * 
     */
    public void crearReserva(Reserva reservaCrear) {

        daoReserva.crearReserva(reservaCrear);
    }

    /**
     * {@inheritDoc}
     */
    public ArrayList<Reserva> listaReserva() {
        return daoReserva.listaReserva();
    }

    /**
     * {@inheritDoc}
     */
    public ArrayList<Reserva> listaReservaUsuario(Usuario usuarioBucarListar) {
        return daoReserva.listaReservaUsuaio(usuarioBucarListar);
    }

    /**
     * {@inheritDoc}
     */
    public void eliminarReserva(Reserva reservaEliminar) {

        Reserva reservaBuqueda = daoReserva.buscarReservaId(reservaEliminar);

        if (reservaBuqueda != null) {
            daoReserva.eliminarReserva(reservaBuqueda);
        }

    }

    /**
     * {@inheritDoc}
     */
    public Reserva buscarReservaId(Reserva reservaBusqueda) {

        Reserva reserva = null;
        try {
            reserva = daoReserva.buscarReservaId(reservaBusqueda);
        } catch (NoResultException e) {
            System.out.println("Usuario No existe");
        }

        return reserva;

    }

}
